Курс: Объектно-ориентированное программирование в Python
Источник: https://t.me/Python_libr/3519
Краткое содержание
Опубликован курс по объектно-ориентированному программированию (ООП) на Python, охватывающий 36 тем — от базовых концепций классов и объектов до продвинутых механизмов метаклассов и интеграции с Django ORM. ООП — парадигма программирования, в которой основными концепциями являются классы и объекты: класс выступает как чертёж, а объект — как конкретный экземпляр этого чертежа. В Python всё является объектами: строки, списки, словари и т.д.
# Базовый пример: класс, __init__, метод, property
class BankAccount:
def __init__(self, owner: str, balance: float = 0.0):
self.owner = owner
self._balance = balance
@property
def balance(self):
return self._balance
def deposit(self, amount: float):
if amount <= 0:
raise ValueError("Сумма должна быть положительной")
self._balance += amount
def __repr__(self):
return f"BankAccount(owner={self.owner!r}, balance={self._balance})"
acc = BankAccount("Иван", 1000)
acc.deposit(500)
print(acc) # BankAccount(owner='Иван', balance=1500)
Программа курса
Курс структурирован по нарастающей сложности. Первый блок охватывает основы: классы и объекты, атрибуты, параметр self, инициализатор __init__ и финализатор __del__, а также магический метод __new__ с примером паттерна Singleton. Второй блок посвящён методам: методам класса (classmethod), статическим методам (staticmethod), режимам доступа public/private/protected, сеттерам и геттерам, а также свойствам property и дескрипторам.
Третий блок охватывает магические методы: __setattr__, __getattribute__, __call__ (функторы и классы-декораторы), методы сравнения (__eq__, __ne__, __lt__, __gt__), арифметические методы (__add__, __sub__, __mul__, __truediv__), а также __bool__, __iter__ и __next__ для создания итераторов.
Четвёртый блок посвящён наследованию: функция super(), делегирование, полиморфизм и абстрактные методы, множественное наследование. Пятый блок затрагивает продвинутые темы: коллекция __slots__, обработка исключений (блоки try/except/finally/else, инструкция raise, пользовательские исключения), менеджеры контекстов (with), вложенные классы, метаклассы и объект type, а также применение метаклассов в API ORM Django.
# Пример множественного наследования и super()
class A:
def greet(self):
return "A"
class B(A):
def greet(self):
return "B -> " + super().greet()
class C(A):
def greet(self):
return "C -> " + super().greet()
class D(B, C):
pass
print(D().greet()) # B -> C -> A (MRO: D, B, C, A)
Значимость
Курс представляет собой полноценную структурированную программу изучения ООП в Python — от синтаксиса до архитектурных паттернов и интеграции с реальными фреймворками. Особенно полезен для разработчиков, переходящих от процедурного стиля к объектно-ориентированному, а также для тех, кто хочет глубже понять внутреннее устройство Python.
🧾 Транскрипт (формат)
👨🏻💻 Курс Объектно-ориентированное программирование Python
Источник: https://t.me/Python_libr/3519
👨🏻💻 Курс: Объектно-ориентированное программирование Python.
• Объектно-ориентированное программирование (ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов.
• Класс — тип, описывающий устройство объектов. Объект — это экземпляр класса. Класс можно сравнить с чертежом, по которому создаются объекты.
• Python соответствует принципам объектно-ориентированного программирования. В python всё является объектами - и строки, и списки, и словари, и всё остальное.
• Но возможности ООП в python этим не ограничены. Программист может написать свой тип данных (класс), определить в нём свои методы.
• Это не является обязательным - мы можем пользоваться только встроенными объектами. Однако ООП полезно при долгосрочной разработке программы несколькими людьми, так как упрощает понимание кода.
• Концепция ООП простыми словами; • 1. Классы и объекты. Атрибуты классов и объектов; • 2. Методы классов. Параметр self; • 3. Инициализатор __init__ и финализатор __del__; • 4. Магический метод __new__. Пример паттерна Singleton; • 5. Методы класса (classmethod) и статические методы (staticmethod); • 6. Режимы доступа public, private, protected. Сеттеры и геттеры; • 7. Магические методы __setattr__, __getattribute__, __getattr__ и __delattr__; • 8. Паттерн "Моносостояние"; • 9. Свойства property. Декоратор property; • 10. Пример использования объектов property; • 11. Дескрипторы (data descriptor и non-data descriptor); • 12. Магический метод __call__. Функторы и классы-декораторы; • 13. Магические методы __str__, __repr__, __len__, __abs__; • 14 Магические методы __add__, __sub__, __mul__, __truediv__; • 15. Методы сравнений __eq__, __ne__, __lt__, __gt__ и другие; • 16. Магические методы __eq__ и __hash__; • 17. Магический метод __bool__ определения правдивости объектов; • 18. Магические методы __getitem__, __setitem__ и __delitem__; • 19. Магические методы __iter__ и __next__ ; • 20. Наследование в объектно-ориентированном программировании; • 21. Функция issubclass(). Наследование от встроенных типов и от object; • 22. Наследование. Функция super() и делегирование; • 23. Наследование. Атрибуты private и protected; • 24. Полиморфизм и абстрактные методы; • 25. Множественное наследование; • 26. Коллекция __slots__; • 27. Как работает __slots__ с property и при наследовании; • 28. Введение в обработку исключений. Блоки try / except; • 29. Обработка исключений. Блоки finally и else; • 30. Распространение исключений (propagation exceptions); • 31. Инструкция raise и пользовательские исключения; • 32. Менеджеры контекстов. Оператор with; • 33. Вложенные классы; • 34. Метаклассы. Объект type; • 35. Пользовательские метаклассы. Параметр metaclass; • 36. Метаклассы в API ORM Django.
#Курс